package com.relytosoft.mizar.media.common.entity.pojo.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.time.LocalDateTime;


/**
 * @author lj
 * @date 2022/5/20 14:58
 */
@ApiModel("AyDispositionPlan")
public class AyDispositionPlanDto implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "布控ID", required = true)
    private String dispositionId;

    @ApiModelProperty(value = "布控任务类型;1结构化布控任务 2人脸布控任务", required = true)
    private Integer dispositionType;

    @ApiModelProperty(value = "布控方式 人/车/非机动车", required = true)
    private Integer dispositionCategory;

    @ApiModelProperty(value = "布控文本", required = true)
    private String dispositionText;

    @ApiModelProperty(value = "计划类型;0：周计划 1：日计划（周一到周日计划相同） 2：全天", required = true)
    private Integer planType;

    @ApiModelProperty(value = "计划信息条数;取值范围如下： 周计划时：1～7 日计划时：1 全天：0")
    private Integer planInfoNum;

    @ApiModelProperty(value = "计划信息列表;(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息")
    private String planInfoList;

    @ApiModelProperty(value = "临时名单开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime beginTime;

    @ApiModelProperty(value = "临时名单结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;

    @ApiModelProperty(value = "设备ID")
    private String deviceId;

    @ApiModelProperty(value = "布控状态;0：未开始，1：布控中，2：已结束，3：异常", required = true)
    private Integer status;

    @ApiModelProperty(value = "布防状态;0-已撤防 1-布防中", required = true)
    private Integer defenseStatus;

    @ApiModelProperty(value = "车辆库;多个以英文逗号隔开")
    private String vehicleGroup;

    @ApiModelProperty(value = "临时车辆库;多个以英文逗号隔开")
    private String tempVehicleGroup;

    @ApiModelProperty(value = "白名单库;多个以英文逗号隔开")
    private String whitePersonGroup;

    @ApiModelProperty(value = "相似度")
    private Double threshold;

    @ApiModelProperty(value = "布控人脸id")
    private String faceId;

    @ApiModelProperty(value = "任务名称")
    private String taskName;

    @ApiModelProperty(value = "设备编码")
    private String cameraCode;

    @ApiModelProperty(value = "设备名称")
    private String cameraName;

    @ApiModelProperty(value = "报警类型id")
    private Integer alarmTypeId;

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getDefenseStatus() {
        return defenseStatus;
    }

    public void setDefenseStatus(Integer defenseStatus) {
        this.defenseStatus = defenseStatus;
    }

    public String getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }

    /**
     * 获得布控ID
     */
    public String getDispositionId() {
        return this.dispositionId;
    }

    /**
     * 设置布控ID
     */
    public void setDispositionId(String dispositionId) {
        this.dispositionId = dispositionId;
    }

    /**
     * 获得布控任务类型;1结构化布控任务 2人脸布控任务
     */
    public Integer getDispositionType() {
        return this.dispositionType;
    }

    /**
     * 设置布控任务类型;1结构化布控任务 2人脸布控任务
     */
    public void setDispositionType(Integer dispositionType) {
        this.dispositionType = dispositionType;
    }

    /**
     * 获得计划类型;0：周计划 1：日计划（周一到周日计划相同） 2：全天
     */
    public Integer getPlanType() {
        return this.planType;
    }

    /**
     * 设置计划类型;0：周计划 1：日计划（周一到周日计划相同） 2：全天
     */
    public void setPlanType(Integer planType) {
        this.planType = planType;
    }

    /**
     * 获得计划信息条数;取值范围如下： 周计划时：1～7 日计划时：1 全天：0
     */
    public Integer getPlanInfoNum() {
        return this.planInfoNum;
    }

    /**
     * 设置计划信息条数;取值范围如下： 周计划时：1～7 日计划时：1 全天：0
     */
    public void setPlanInfoNum(Integer planInfoNum) {
        this.planInfoNum = planInfoNum;
    }

    /**
     * 获得计划信息列表;(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息
     */
    public String getPlanInfoList() {
        return this.planInfoList;
    }

    /**
     * 设置计划信息列表;(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息
     */
    public void setPlanInfoList(String planInfoList) {
        this.planInfoList = planInfoList;
    }

    public LocalDateTime getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(LocalDateTime beginTime) {
        this.beginTime = beginTime;
    }

    public LocalDateTime getEndTime() {
        return endTime;
    }

    public void setEndTime(LocalDateTime endTime) {
        this.endTime = endTime;
    }

    public String getVehicleGroup() {
        return vehicleGroup;
    }

    public void setVehicleGroup(String vehicleGroup) {
        this.vehicleGroup = vehicleGroup;
    }

    public Integer getDispositionCategory() {
        return dispositionCategory;
    }

    public void setDispositionCategory(Integer dispositionCategory) {
        this.dispositionCategory = dispositionCategory;
    }

    public String getDispositionText() {
        return dispositionText;
    }

    public void setDispositionText(String dispositionText) {
        this.dispositionText = dispositionText;
    }

    public String getTempVehicleGroup() {
        return tempVehicleGroup;
    }

    public void setTempVehicleGroup(String tempVehicleGroup) {
        this.tempVehicleGroup = tempVehicleGroup;
    }

    public String getTaskName() {
        return taskName;
    }

    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public String getCameraCode() {
        return cameraCode;
    }

    public void setCameraCode(String cameraCode) {
        this.cameraCode = cameraCode;
    }

    public String getCameraName() {
        return cameraName;
    }

    public void setCameraName(String cameraName) {
        this.cameraName = cameraName;
    }

    public Integer getAlarmTypeId() {
        return alarmTypeId;
    }

    public void setAlarmTypeId(Integer alarmTypeId) {
        this.alarmTypeId = alarmTypeId;
    }

    public String getWhitePersonGroup() {
        return whitePersonGroup;
    }

    public void setWhitePersonGroup(String whitePersonGroup) {
        this.whitePersonGroup = whitePersonGroup;
    }

    public Double getThreshold() {
        return threshold;
    }

    public void setThreshold(Double threshold) {
        this.threshold = threshold;
    }

    public String getFaceId() {
        return faceId;
    }

    public void setFaceId(String faceId) {
        this.faceId = faceId;
    }

    @Override
    public String toString() {
        return "AyDispositionPlanDto{" +
                "dispositionId='" + dispositionId + '\'' +
                ", dispositionType=" + dispositionType +
                ", dispositionCategory=" + dispositionCategory +
                ", dispositionText='" + dispositionText + '\'' +
                ", planType=" + planType +
                ", planInfoNum=" + planInfoNum +
                ", planInfoList='" + planInfoList + '\'' +
                ", beginTime=" + beginTime +
                ", endTime=" + endTime +
                ", deviceId='" + deviceId + '\'' +
                ", status=" + status +
                ", defenseStatus=" + defenseStatus +
                ", vehicleGroup='" + vehicleGroup + '\'' +
                ", tempVehicleGroup='" + tempVehicleGroup + '\'' +
                ", whitePersonGroup='" + whitePersonGroup + '\'' +
                ", threshold=" + threshold +
                ", faceId=" + faceId +
                ", taskName='" + taskName + '\'' +
                ", cameraCode='" + cameraCode + '\'' +
                ", cameraName='" + cameraName + '\'' +
                ", alarmTypeId=" + alarmTypeId +
                '}';
    }
}
